/**
 * 
 */
package com.bbva.gptf.back.servicio.reporteo;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.bbva.gptf.back.dominio.Tgpt029OrdCapital;
import com.bbva.gptf.back.dominio.Tgpt030DetOrdCap;
import com.bbva.gptf.back.dominio.Tgpt031OrdenDeuda;
import com.bbva.gptf.back.dominio.Tgpt032DetOrdDeu;
import com.bbva.gptf.back.transformador.TransformadorDetalleOrden;
import com.bbva.gptf.back.transformador.TransformadorDetalleOrdenCapital;
import com.bbva.gptf.back.transformador.TransformadorFolioOrden;
import com.bbva.gptf.back.transformador.TransformadorFolioOrdenCapital;
import com.bbva.gptf.back.transformador.TransformadorOrden;
import com.bbva.gptf.back.transformador.TransformadorOrdenCapital;
import com.bbva.gptf.back.transformador.TransformadorTgpt029OrdCapital;
import com.bbva.gptf.back.transformador.TransformadorTgpt030DetOrdCap;
import com.bbva.gptf.back.transformador.TransformadorTgpt031OrdenDeuda;
import com.bbva.gptf.back.transformador.TransformadorTgpt032DetOrdDeu;
import com.bbva.gptf.back.util.OrdenaOrdenPorFolio;
import com.bbva.gptf.dto.bean.DetalleOrden;
import com.bbva.gptf.dto.bean.Orden;
import com.bbva.gptf.dto.servicio.carga.ServicioParametro;
import com.bbva.gptf.dto.servicio.reporteo.ServicioOrden;
import com.bbva.jee.arq.spring.core.httpService.HttpService;

/**
 * @author mtellezg
 * 
 */

@HttpService(serviceName = "servicioOrdenHttp")
public class ServicioOrdenImpl implements ServicioOrden {

	@Autowired
	TransformadorOrden transformadorOrden;
	@Autowired
	TransformadorDetalleOrden transformadorDetalleOrden;
	@Autowired
	TransformadorOrdenCapital transformadorOrdenCapital;
	@Autowired
	TransformadorDetalleOrdenCapital transformadorDetOrdenCapital;
	@Autowired
	TransformadorTgpt031OrdenDeuda transformadorTgpt031OrdenDeuda;
	@Autowired
	TransformadorTgpt032DetOrdDeu transformadorTgpt032DetOrdDeu;
	@Autowired
	TransformadorTgpt029OrdCapital transformadorTgpt029OrdCapital;
	@Autowired
	TransformadorTgpt030DetOrdCap transformadorTgpt030DetOrdCap;
	@Autowired
	TransformadorFolioOrden transformadorFolioOrden;
	@Autowired
	TransformadorFolioOrdenCapital transformadorFolioOrdenCapital;
	@Autowired
	private ServicioParametro servicioParametro;

	@Override
	public boolean actualizarDetalleOrdenCapital(final DetalleOrden detalleOrden) {
		try {
			final Tgpt030DetOrdCap tgptDetOrdCap = transformadorTgpt030DetOrdCap
					.convert(detalleOrden);
			tgptDetOrdCap.merge();
			return true;
		} catch (final Exception ex) {
			return false;
		}
	}

	@Override
	public boolean actualizarDetalleOrdenDeuda(final DetalleOrden detalleOrden) {
		try {
			final Tgpt032DetOrdDeu tgptDetalleOrden = transformadorTgpt032DetOrdDeu
					.convert(detalleOrden);
			tgptDetalleOrden.merge();
			return true;
		} catch (final Exception ex) {
			return false;
		}
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED)
	public boolean actualizarOrdenCapital(final Orden orden) {
		try {
			final Tgpt029OrdCapital tgptOrdenCapital = transformadorTgpt029OrdCapital
					.convert(orden);
			tgptOrdenCapital.merge();
			orden.setCdOrden(tgptOrdenCapital.getCdOrdenCapital());
			if (orden.getDetallesOrden() != null) {
				for (final DetalleOrden detOrdCap : orden.getDetallesOrden()) {
					detOrdCap.setCdOrden(orden.getCdOrden());
					actualizarDetalleOrdenCapital(detOrdCap);
				}
			}
			return true;
		} catch (final Exception ex) {
			return false;
		}
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED)
	public boolean actualizarOrdenDeuda(final Orden orden) {
		try {
			boolean exito = true;
			final Tgpt031OrdenDeuda tgptOrdenDeuda = transformadorTgpt031OrdenDeuda
					.convert(orden);
			tgptOrdenDeuda.merge().getCdOrdenDeuda();
			orden.setCdOrden(tgptOrdenDeuda.getCdOrdenDeuda());
			if (orden.getDetallesOrden() != null) {
				for (final DetalleOrden detOrden : orden.getDetallesOrden()) {
					detOrden.setCdOrden(orden.getCdOrden());
					if (orden.getStOrden().equals(BigDecimal.ONE)) {
						detOrden.setStDetalle(BigDecimal.ZERO);
					}
					if (!actualizarDetalleOrdenDeuda(detOrden)) {
						exito = false;
					}
				}
			}
			return exito;
		} catch (final Exception ex) {
			return false;
		}
	}

	private String compraOVenta(final BigDecimal tipo) {
		String tipoV = "";
		if (tipo != null) {
			tipoV = tipo.compareTo(BigDecimal.ONE) == 0 ? "C" : "V";
		}
		return tipoV;
	}

	@Override
	public void generarArchivoAsignacion() {
		try {
			final BigDecimal stDetalle = BigDecimal.ONE;
			final String espacio = " ";
			final String puntoYComa = ";";
			final SimpleDateFormat formatoFecha = new SimpleDateFormat(
					"yyMMdd");
			final Calendar cal = Calendar.getInstance();
			final String ruta = servicioParametro
					.obtenerParametro("RUTA_SIVA_MUV");

			final String nombreArchivo = "OPER_ASIGNAR_D"
					+ formatoFecha.format(cal.getTime());
			final String extension = ".txt";
			final String archivo = ruta.concat(nombreArchivo).concat(extension);
			final File f = new File(archivo);
			if (f.exists()) {
				f.delete();
			}

			FileWriter fw;

			fw = new FileWriter(archivo);

			final BufferedWriter bw = new BufferedWriter(fw);

			final List<Tgpt032DetOrdDeu> listaD = Tgpt032DetOrdDeu
					.obtieneDetalleOrdenPorestatus(stDetalle);

			if (listaD != null) {
				for (final Tgpt032DetOrdDeu ordDeu : listaD) {
					final StringBuffer linea = new StringBuffer("");
					// CONTRATO
					linea.append(obtieneNumero(ordDeu.getId().getCdContrato(),
							"0000000"));
					linea.append(puntoYComa);
					// CLAVE DE OPERACION
					linea.append(rellenaStr(compraOVenta(ordDeu
							.getCdOrdenDeuda().getTpOperacion()), espacio, 2));
					linea.append(puntoYComa);
					// IMPORTE
					BigDecimal ajuste = new BigDecimal("0.2");
					final BigDecimal importe = ordDeu.getToImporteAsig() != null ? ordDeu
							.getToImporteAsig() : BigDecimal.ZERO;

					ajuste = importe.add(ajuste).setScale(2,
							RoundingMode.HALF_UP);
					linea.append(obtieneNumero(ajuste, "0000000000000.00"));
					linea.append(puntoYComa);
					// PRECIO
					linea.append(obtieneNumero(BigDecimal.ZERO,
							"0000000.00000000"));
					linea.append(puntoYComa);
					// TASA
					linea.append(obtieneNumero(ordDeu.getPcTasaAsig(),
							"000.000000"));
					linea.append(puntoYComa);
					// PLAZO
					linea.append(obtieneNumero(ordDeu.getDuPlazoAsig(), "00000"));
					linea.append(puntoYComa);
					// CLAVE LIQUIDACION
					linea.append(rellenaStr(ordDeu.getCdCveLiquidacion(),
							espacio, 1));
					linea.append(puntoYComa);
					// EMISORA
					final String emisora = obtieneEmisora(ordDeu
							.getCdOrdenDeuda());
					linea.append(rellenaStr(emisora.toString(), espacio, 7));
					linea.append(puntoYComa);
					// SERIE
					linea.append(rellenaStr(ordDeu.getCdOrdenDeuda()
							.getCdSerie(), espacio, 8));
					linea.append(puntoYComa);
					// TITULOS
					linea.append(obtieneNumero(ordDeu.getCtTituloPost(),
							"0000000000000.00"));
					linea.append(puntoYComa);
					// USUARIO
					linea.append(rellenaStr(ordDeu.getCdUsuarioUmo(), espacio,
							8));
					linea.append(puntoYComa);
					// SUCURSAL
					linea.append("000");
					linea.append(puntoYComa);
					// PERFIL
					linea.append(rellenaStr("GIADMON", espacio, 8));
					linea.append(puntoYComa);
					// FOLIO HG
					linea.append(obtieneNumero(ordDeu.getId().getNuFolioHg(),
							"000000000"));
					linea.append(puntoYComa);
					// FOLIO BUC
					linea.append(ordDeu.getNuFolioBuc() != null ? obtieneNumero(
							ordDeu.getNuFolioBuc(), "000000000") : "         ");
					linea.append(puntoYComa);
					// MENSAJE ERROR
					linea.append(rellenaStr("", espacio, 50));
					linea.append(puntoYComa);
					// FILER
					linea.append(rellenaStr("", espacio, 50));
					linea.append("\n");
					bw.write(linea.toString());
				}
			}
			bw.close();
			fw.close();

		} catch (final IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Override
	public boolean guardarDetalleOrdenCapital(final DetalleOrden detalleOrden) {
		try {
			final Tgpt030DetOrdCap tgptDetalleOrdCap = transformadorTgpt030DetOrdCap
					.convert(detalleOrden);
			tgptDetalleOrdCap.persist();
			return true;
		} catch (final Exception ex) {
			return false;
		}
	}

	@Override
	public boolean guardarDetalleOrdenDeuda(final DetalleOrden detalleOrden) {
		try {
			final Tgpt032DetOrdDeu tgptDetalleOrden = transformadorTgpt032DetOrdDeu
					.convert(detalleOrden);
			tgptDetalleOrden.persist();
			return true;
		} catch (final Exception ex) {
			return false;
		}
	}

	@Override
	public boolean guardarOrdenCapital(final Orden orden) {
		try {
			final Tgpt029OrdCapital tgptOrdenCapital = transformadorTgpt029OrdCapital
					.convert(orden);
			tgptOrdenCapital.persist();

			orden.setCdOrden(tgptOrdenCapital.getCdOrdenCapital());
			if (orden.getDetallesOrden() != null) {
				for (final DetalleOrden detOrdenCapital : orden
						.getDetallesOrden()) {
					detOrdenCapital.setCdOrden(orden.getCdOrden());
					guardarDetalleOrdenCapital(detOrdenCapital);
				}
			}
			return true;
		} catch (final Exception ex) {
			return false;
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.bbva.gptf.dto.servicio.reporteo.ServicioOrden#guardarOrdenDeuda(com
	 * .bbva.gptf.dto.bean.Orden)
	 */
	@Override
	public boolean guardarOrdenDeuda(final Orden orden) {
		try {
			final Tgpt031OrdenDeuda tgptOrdenDeuda = transformadorTgpt031OrdenDeuda
					.convert(orden);
			tgptOrdenDeuda.persist();
			orden.setCdOrden(tgptOrdenDeuda.getCdOrdenDeuda());
			if (orden.getDetallesOrden() != null) {
				for (final DetalleOrden detOrden : orden.getDetallesOrden()) {
					detOrden.setCdOrden(orden.getCdOrden());
					guardarDetalleOrdenDeuda(detOrden);
				}
			}
			return true;
		} catch (final Exception ex) {
			return false;
		}
	}

	@Override
	public List<Orden> obtenerALLOrdenCapital() {
		// TODO Auto-generated method stub
		final List<Orden> ordenesCapital = new ArrayList<Orden>();
		List<Tgpt029OrdCapital> tgptOrdenCapital = new ArrayList<Tgpt029OrdCapital>();
		tgptOrdenCapital = Tgpt029OrdCapital.findAllTgpt029OrdCapitals();
		// List<DetalleOrden> detalles = new ArrayList<DetalleOrden>();
		if (tgptOrdenCapital != null) {
			for (final Tgpt029OrdCapital entOrden : tgptOrdenCapital) {
				final Orden orden = transformadorOrdenCapital.convert(entOrden);
				/*
				 * detalles = obtenerDetallesOrdenCapital(entOrden
				 * .getCdOrdenCapital()); orden.setDetallesOrden(detalles);
				 */
				ordenesCapital.add(orden);
			}
		}
		return ordenesCapital;
	}

	@Override
	public List<Orden> obtenerALLOrdenDeuda() {
		// TODO Auto-generated method stub
		final List<Orden> ordenesDeuda = new ArrayList<Orden>();
		List<Tgpt031OrdenDeuda> tgptOrdenDeuda = new ArrayList<Tgpt031OrdenDeuda>();
		tgptOrdenDeuda = Tgpt031OrdenDeuda.findAllTgpt031OrdenDeudas();
		// List<DetalleOrden> detalles = new ArrayList<DetalleOrden>();
		if (tgptOrdenDeuda != null) {
			for (final Tgpt031OrdenDeuda entOrden : tgptOrdenDeuda) {
				final Orden orden = transformadorOrden.convert(entOrden);
				/*
				 * detalles =
				 * obtenerDetallesOrdenDeuda(entOrden.getCdOrdenDeuda());
				 * orden.setDetallesOrden(detalles);
				 */
				ordenesDeuda.add(orden);
			}
		}
		return ordenesDeuda;
	}

	@Override
	public List<Orden> obtenerALLOrdenDeuda(final BigDecimal cdGestor,
			final List<BigDecimal> listaStOrden) {
		final List<Orden> ordenesDeuda = new ArrayList<Orden>();
		List<Tgpt031OrdenDeuda> tgptOrdenDeuda = new ArrayList<Tgpt031OrdenDeuda>();
		tgptOrdenDeuda = Tgpt031OrdenDeuda.obtenerOrdenesDeuda(cdGestor,
				listaStOrden);
		if (tgptOrdenDeuda != null) {
			for (final Tgpt031OrdenDeuda entOrden : tgptOrdenDeuda) {
				final Orden orden = transformadorOrden.convert(entOrden);
				ordenesDeuda.add(orden);
			}
		}
		return ordenesDeuda;
	}

	@Override
	public List<Orden> obtenerALLOrdenDeuda(final List<BigDecimal> listaStOrden) {
		final List<Orden> ordenesDeuda = new ArrayList<Orden>();
		List<Tgpt031OrdenDeuda> tgptOrdenDeuda = new ArrayList<Tgpt031OrdenDeuda>();
		tgptOrdenDeuda = Tgpt031OrdenDeuda.obtenerOrdenesDeuda(listaStOrden);
		if (tgptOrdenDeuda != null) {
			for (final Tgpt031OrdenDeuda entOrden : tgptOrdenDeuda) {
				final Orden orden = transformadorFolioOrden.convert(entOrden);
				ordenesDeuda.add(orden);
			}
			Collections.sort(ordenesDeuda, new OrdenaOrdenPorFolio());
		}
		return ordenesDeuda;
	}

	@Override
	public List<DetalleOrden> obtenerDetallesOrdenCapital(
			final BigDecimal cdOrdenCapital) {
		// TODO Auto-generated method stub
		final List<Tgpt030DetOrdCap> tgptDetOrdCap = Tgpt030DetOrdCap
				.obtenerDetallesOrdenCapital(cdOrdenCapital);
		final List<DetalleOrden> detallesOrdenCapital = new ArrayList<DetalleOrden>();
		if (tgptDetOrdCap != null) {
			for (final Tgpt030DetOrdCap entDetOrdCap : tgptDetOrdCap) {
				final DetalleOrden detOrdenCapital = transformadorDetOrdenCapital
						.convert(entDetOrdCap);
				detallesOrdenCapital.add(detOrdenCapital);
			}
		}
		return detallesOrdenCapital;
	}

	@Override
	public List<DetalleOrden> obtenerDetallesOrdenDeuda(
			final BigDecimal cdOrdenDeuda) {
		// TODO Auto-generated method stub
		final List<Tgpt032DetOrdDeu> tgptDetOrdDeu = Tgpt032DetOrdDeu
				.obtenerDetallesOrdenDeuda(cdOrdenDeuda);
		final List<DetalleOrden> detallesOrdenDeuda = new ArrayList<DetalleOrden>();
		if (tgptDetOrdDeu != null) {
			for (final Tgpt032DetOrdDeu entDetOrd : tgptDetOrdDeu) {
				final DetalleOrden detOrden = transformadorDetalleOrden
						.convert(entDetOrd);
				detallesOrdenDeuda.add(detOrden);
			}
		}
		return detallesOrdenDeuda;
	}

	@Override
	public List<Orden> obtenerFolioOrdenesCapital(final BigDecimal stOrden,
			final BigDecimal cdGestor) {
		final List<Tgpt029OrdCapital> tgptOrdCap = Tgpt029OrdCapital
				.obtenerOrdenesCapital(stOrden, cdGestor);
		final List<Orden> ordenesCap = new ArrayList<Orden>();
		if (tgptOrdCap != null) {
			for (final Tgpt029OrdCapital entOrdenCap : tgptOrdCap) {
				final Orden orden = transformadorFolioOrdenCapital
						.convert(entOrdenCap);
				ordenesCap.add(orden);
			}
		}
		return ordenesCap;
	}

	@Override
	public List<Orden> obtenerFolioOrdenesDeuda(final BigDecimal stOrden,
			final BigDecimal cdGestor) {
		final List<Tgpt031OrdenDeuda> tgptOrdenes = Tgpt031OrdenDeuda
				.obtenerOrdenesDeuda(stOrden, cdGestor);
		final List<Orden> ordenes = new ArrayList<Orden>();
		if (tgptOrdenes != null) {
			for (final Tgpt031OrdenDeuda entOrden : tgptOrdenes) {
				final Orden orden = transformadorFolioOrden.convert(entOrden);
				ordenes.add(orden);
			}
		}
		return ordenes;
	}

	@Override
	public Orden obtenerOrdenCapitalPorCdOrdenCapital(
			final BigDecimal cdOrdenCapital) {
		// TODO Auto-generated method stub
		final Tgpt029OrdCapital tgptOrdenCapital = Tgpt029OrdCapital
				.findTgpt029OrdCapital(cdOrdenCapital);
		Orden orden = new Orden();
		orden = transformadorOrdenCapital.convert(tgptOrdenCapital);
		return orden;
	}

	@Override
	public Orden obtenerOrdenDeudaPorCdOrdenDeuda(final BigDecimal cdOrdenDeuda) {
		// TODO Auto-generated method stub
		final Tgpt031OrdenDeuda tgptOrdenDeuda = Tgpt031OrdenDeuda
				.findTgpt031OrdenDeuda(cdOrdenDeuda);
		Orden orden = new Orden();
		orden = transformadorOrden.convert(tgptOrdenDeuda);
		return orden;
	}

	@Override
	public List<Orden> obtenerOrdenesCapital(final BigDecimal stOrden,
			final BigDecimal cdGestor) {
		// TODO Auto-generated method stub
		final List<Tgpt029OrdCapital> tgptOrdCap = Tgpt029OrdCapital
				.obtenerOrdenesCapital(stOrden, cdGestor);
		final List<Orden> ordenesCap = new ArrayList<Orden>();
		// List<DetalleOrden> detalles = new ArrayList<DetalleOrden>();
		if (tgptOrdCap != null) {
			for (final Tgpt029OrdCapital entOrdenCap : tgptOrdCap) {
				final Orden orden = transformadorOrdenCapital
						.convert(entOrdenCap);
				/*
				 * detalles = obtenerDetallesOrdenCapital(entOrdenCap
				 * .getCdOrdenCapital()); orden.setDetallesOrden(detalles);
				 */
				ordenesCap.add(orden);
			}
		}
		return ordenesCap;
	}

	public boolean eliminarOrden(BigDecimal cdOrden) {
		Boolean found = false;
		Integer tamanio = 0;
		Tgpt029OrdCapital oc = Tgpt029OrdCapital.findTgpt029OrdCapital(cdOrden);
		if (oc != null) {
			List<Tgpt030DetOrdCap> ordenes= Tgpt030DetOrdCap.obtenerDetallesOrdenCapital(cdOrden);
			tamanio = ordenes.size();
			try {
				for (int i = 0; i < tamanio; i++) {
					Tgpt030DetOrdCap dc = ordenes.get(i);
					dc.remove();
				}
				oc.remove();
				found = true;
			} catch (Exception e) {
				found = false;
			}
		}
		
		Tgpt031OrdenDeuda od = Tgpt031OrdenDeuda.findTgpt031OrdenDeuda(cdOrden);
		if (od != null) {
			List<Tgpt032DetOrdDeu> ordenes = Tgpt032DetOrdDeu.obtenerDetallesOrdenDeuda(cdOrden);
			tamanio = ordenes.size();
			try {
				for (int i = 0; i < tamanio; i++) {
					Tgpt032DetOrdDeu dd = ordenes.get(i);
					dd.remove();
				}
				od.remove();
				found = true;
			} catch (Exception e) {
				found = false;
			}
		}
		
		return found;
		
	}
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.bbva.gptf.dto.servicio.reporteo.ServicioOrden#obtenerOrdenesDeuda
	 * (java.math.BigDecimal, java.math.BigDecimal)
	 */
	@Override
	public List<Orden> obtenerOrdenesDeuda(final BigDecimal stOrden,
			final BigDecimal cdGestor) {
		// TODO Auto-generated method stub
		final List<Tgpt031OrdenDeuda> tgptOrdenes = Tgpt031OrdenDeuda
				.obtenerOrdenesDeuda(stOrden, cdGestor);
		final List<Orden> ordenes = new ArrayList<Orden>();
		/* List<DetalleOrden> detalles = new ArrayList<DetalleOrden>(); */
		if (tgptOrdenes != null) {
			for (final Tgpt031OrdenDeuda entOrden : tgptOrdenes) {
				final Orden orden = transformadorOrden.convert(entOrden);
				/*
				 * detalles =
				 * obtenerDetallesOrdenDeuda(entOrden.getCdOrdenDeuda());
				 * orden.setDetallesOrden(detalles);
				 */
				ordenes.add(orden);
			}
		}
		return ordenes;
	}

	private String obtieneEmisora(final Tgpt031OrdenDeuda orden) {
		String emisora = StringUtils.isNotBlank(orden.getCdEmisora()) ? orden
				.getCdEmisora() : "";
		if ("BONOS".equalsIgnoreCase(emisora)) {
			if (StringUtils.isNotBlank(orden.getCdValorBmv())) {
				emisora = emisora + orden.getCdValorBmv();
			}
		} else if ("PE&OLES".equalsIgnoreCase(emisora)) {
			emisora = "PE#OLES";
		} else if ("BONDESD".equalsIgnoreCase(emisora)) {
			emisora = "BONDELD";
		} else if ("BACOMER".equalsIgnoreCase(emisora)) {
			emisora = "FBACOME";
		} else if ("CETES".equalsIgnoreCase(emisora)) {
			emisora = "CETESBI";
		} else if ("BANSAN".equalsIgnoreCase(emisora)) {
			emisora = "FBANSAN";
		} else if ("INGBANK".equalsIgnoreCase(emisora)) {
			emisora = "IINGBAN";
		} else if ("BANOBRA".equalsIgnoreCase(emisora)) {
			emisora = "FBANOBR";
		} else if ("NAFIN".equalsIgnoreCase(emisora)) {
			emisora = "FNAFI";
		}

		return emisora;
	}

	private String obtieneNumero(BigDecimal valor, final String formato) {
		final NumberFormat frmt = new DecimalFormat(formato);
		if (valor == null) {
			valor = BigDecimal.ZERO;
		}

		return frmt.format(valor.doubleValue()).replace(".", "")
				.replace(",", "");
	}

	private String rellenaStr(final Object valor, final String car,
			final Integer tamanio) {
		final StringBuffer res = new StringBuffer("");
		String str = "";
		if (valor != null) {
			str = valor.toString();
		}
		res.append(str);
		final Integer relleno = tamanio > str.length() ? tamanio - str.length()
				: 0;
		for (int i = 0; i < relleno; i++) {
			res.append(car);
		}

		return res.toString();
	}

	/**
	 * @param servicioParametro
	 *            the servicioParametro to set
	 */
	public void setServicioParametro(final ServicioParametro servicioParametro) {
		this.servicioParametro = servicioParametro;
	}

	/**
	 * @param transformadorDetalleOrden
	 *            the transformadorDetalleOrden to set
	 */
	public void setTransformadorDetalleOrden(
			final TransformadorDetalleOrden transformadorDetalleOrden) {
		this.transformadorDetalleOrden = transformadorDetalleOrden;
	}

	/**
	 * @param transformadorDetOrdenCapital
	 *            the transformadorDetOrdenCapital to set
	 */
	public void setTransformadorDetOrdenCapital(
			final TransformadorDetalleOrdenCapital transformadorDetOrdenCapital) {
		this.transformadorDetOrdenCapital = transformadorDetOrdenCapital;
	}

	public void setTransformadorFolioOrden(
			final TransformadorFolioOrden transformadorFolioOrden) {
		this.transformadorFolioOrden = transformadorFolioOrden;
	}

	public void setTransformadorFolioOrdenCapital(
			final TransformadorFolioOrdenCapital transformadorFolioOrdenCapital) {
		this.transformadorFolioOrdenCapital = transformadorFolioOrdenCapital;
	}

	/**
	 * @param transformadorOrden
	 *            the transformadorOrden to set
	 */
	public void setTransformadorOrden(
			final TransformadorOrden transformadorOrden) {
		this.transformadorOrden = transformadorOrden;
	}

	/**
	 * @param transformadorOrdenCapital
	 *            the transformadorOrdenCapital to set
	 */
	public void setTransformadorOrdenCapital(
			final TransformadorOrdenCapital transformadorOrdenCapital) {
		this.transformadorOrdenCapital = transformadorOrdenCapital;
	}

	public void setTransformadorTgpt029OrdCapital(
			final TransformadorTgpt029OrdCapital transformadorTgpt029OrdCapital) {
		this.transformadorTgpt029OrdCapital = transformadorTgpt029OrdCapital;
	}

	public void setTransformadorTgpt030DetOrdCap(
			final TransformadorTgpt030DetOrdCap transformadorTgpt030DetOrdCap) {
		this.transformadorTgpt030DetOrdCap = transformadorTgpt030DetOrdCap;
	}

	public void setTransformadorTgpt031OrdenDeuda(
			final TransformadorTgpt031OrdenDeuda transformadorTgpt031OrdenDeuda) {
		this.transformadorTgpt031OrdenDeuda = transformadorTgpt031OrdenDeuda;
	}

	public void setTransformadorTgpt032DetOrdDeu(
			final TransformadorTgpt032DetOrdDeu transformadorTgpt032DetOrdDeu) {
		this.transformadorTgpt032DetOrdDeu = transformadorTgpt032DetOrdDeu;
	}

}
